package com.example.home.vm

import androidx.lifecycle.MutableLiveData
import com.example.common.view.vm.BaseViewModel
import com.example.home.entity.NoticeEntityItem
import com.example.home.model.HomeRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import javax.inject.Inject

/**
 * 协程调度器Dispatchers
 * Dispatchers.IO 在子线程中调度(使用线程池64),适用于耗时多任务场景
 * Dispatchers.Main：在主线程中调度(在UI线程,只有1个),适用于UI更新
 * Dispatchers.Default 取决于调用方(固定数量线程池,其中线程数CPU个数+1),适用于少量任务复杂计算
 * Dispatchers.Unconfined：没有限制(没有限制线程数量)
 **/
@HiltViewModel
class HomeViewModel @Inject constructor(private val repo:HomeRepository) :BaseViewModel() {
    val mSuccess = MutableLiveData<List<NoticeEntityItem>>()
    fun loadNoticeData(page:Int,size:Int){
        mViewModelScope.launch(mDispatcher){
            val (code,data,message) = repo.loadNoticeData(page,size)
            if(code == 200){
                mSuccess.postValue(data)
            }else{
                mError.postValue(message)
            }
        }
    }
}